package org.luckystrophe.snowtoms.customview;

import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;

public class AnimateDrawable extends ProxyDrawable {
	private Animation mAnimation;
	private Transformation mTransformation = new Transformation();
	private Drawable target;

	public AnimateDrawable(Drawable target) {
		super(target);
		this.target = target;
	}

	public AnimateDrawable(Drawable target, Animation animation) {
		super(target);
		mAnimation = animation;
		this.target = target;
	}

	public Animation getAnimation() {
		return mAnimation;
	}

	public void setAnimation(Animation anim) {
		mAnimation = anim;
	}

	public Drawable getDrawable() {
		return target;
	}

	public boolean hasStarted() {
		return mAnimation != null && mAnimation.hasStarted();
	}

	public boolean hasEnded() {
		return mAnimation == null || mAnimation.hasEnded();
	}

	@Override
	public void draw(Canvas canvas) {
		Drawable dr = getProxy();
		if (dr != null) {
			int sc = canvas.save();
			Animation anim = mAnimation;
			if (anim != null) {
				anim.getTransformation(AnimationUtils.currentAnimationTimeMillis(), mTransformation);
				canvas.concat(mTransformation.getMatrix());
			}
			dr.draw(canvas);
			canvas.restoreToCount(sc);
		}
	}

	public void stopAnimation() {
		mAnimation.reset();
	}
}
